﻿var LineaBase_Controller =
{
    ListarGrid:
    function LineaBase_Controller_ListarGrid(detalles) 
    {   
        var tableId = "gridLineaBase";
        var flagAlternate = false;

        var grid =
        $("<table>", { id: tableId }).addClass("TableGridJSON").append
        (
            $("<tr>", {}).addClass("HeaderGridJSON").append
            (
                $("<td>", { colspan: 18, html: detalles.length + " registros" })
            ),
            //Cabeceras de la grilla
            $("<tr>", {}).append
            (
                $("<th>", {}).addClass("ColumnSelect"),
                $("<th>", { html: "Codigo Cuenta", width: "80px"}),
                $("<th>", { html: "Tarea", width: "auto"}),
                $("<th>", { html: "Tipo", width: "130px"}),
                $("<th>", { html: "Responsable", width: "130px"}),
                $("<th>", { html: "Fecha Inicio <br/> Proyectado", width: "70px"}),
                $("<th>", { html: "Fecha Fin <br/> Proyectado", width: "70px"}),
                $("<th>", { width: "15px"}),
                $("<th>", { html: "Fecha Inicio <br/> Real", width: "70px"}),
                $("<th>", { html: "Fecha Fin <br/> Real", width: "70px"}),
                $("<th>", { width: "15px"}),
                $("<th>", { html: "BAC", width: "90px"}),
                $("<th>", { html: "PV", width: "90px"}),
                $("<th>", { html: "EV", width: "90px"}),
                $("<th>", { html: "AC", width: "90px"}),
                $("<th>", { html: "CPI", width: "35px"}),
                $("<th>", { html: "SPI", width: "35px"}),
                $("<th>", { width: "15px"})
            ),
            //Filas de la grilla
            $.map
            (
                detalles,
                function (registro) 
                {
                    var classRowGrid = (!flagAlternate ? "rowGridJSON" : "rowGridJSONAlter");
                    var rowId = tableId + "_row" + registro.Id;
                    var identacion = Global_UI.RepetirCadena("&nbsp;",(registro.CodigoCuenta.split(".").length - 1) * 4);

                    flagAlternate = !flagAlternate;

                    return $("<tr>",
                    { 
                        id: rowId,
                        mouseover: function () { $(this).removeClass(classRowGrid); $(this).addClass("rowGridSelect"); },
                        mouseleave: function () { $(this).removeClass("rowGridSelect"); $(this).addClass(classRowGrid); }
                    }).addClass(classRowGrid).append
                    (
                        $("<td>", { html: "►" }).addClass("ColumnSelect"),
                        $("<td>", { html: identacion + registro.CodigoCuenta }).addClass(CssWeb.FormatText),
                        $("<td>", { html: identacion + registro.Nombre }).addClass(CssWeb.FormatText),
                        $("<td>", { html: registro.TipoPaqueteTrabajo }).addClass(CssWeb.FormatText),
                        $("<td>", { html: registro.UsuarioResponsable }).addClass(CssWeb.FormatText),
                        $("<td>", { html: registro.FechaInicioProyectado_Format }).addClass(CssWeb.FormatCenter),
                        $("<td>", { html: registro.FechaFinProyectado_Format }).addClass(CssWeb.FormatCenter),
                        $("<td>", {}).append
                        (
                            $("<img>", 
                            {
                                title: "Recursos Proyectados", 
                                click: function(){ LineaBase_Controller.ConsultarRecursos(true,registro.CodigoCuenta); }
                            }).addClass(CssWeb.GridJSON_IconDetail)
                        ),
                        $("<td>", { html: registro.FechaInicioReal_Format }).addClass(CssWeb.FormatCenter),
                        $("<td>", { html: registro.FechaFinReal_Format }).addClass(CssWeb.FormatCenter),
                        $("<td>", {}).append
                        (
                            $("<img>", 
                            {
                                title: "Recursos Reales", 
                                click: function(){ LineaBase_Controller.ConsultarRecursos(false,registro.CodigoCuenta); }
                            }).addClass(CssWeb.GridJSON_IconDetail)
                        ),
                        $("<td>", { html: registro.BAC_Format }).addClass(CssWeb.FormatNumber),
                        $("<td>", { html: registro.PV_Format }).addClass(CssWeb.FormatNumber),
                        $("<td>", { html: registro.EV_Format }).addClass(CssWeb.FormatNumber),
                        $("<td>", { html: registro.AC_Format }).addClass(CssWeb.FormatNumber),
                        $("<td>", { html: registro.CPI_Format }).addClass(CssWeb.FormatNumber),
                        $("<td>", { html: registro.SPI_Format }).addClass(CssWeb.FormatNumber),
                        $("<td>", {}).append
                        (
                            (
                                (registro.PaqueteTrabajoId == "")
                                ?
                                ""
                                :
                                $("<img>", 
                                {
                                    title: "Editar Tarea", 
                                    click: function(){ Global_UI.ResponseRedirect("../Workflow/RegistrarTarea.aspx?Id=" + registro.PaqueteTrabajoId); }
                                }).addClass(CssWeb.GridJSON_IconEdit)
                            )
                        )
                    );
                }
            )
        )

        target = $("#divGridLineaBase");
        target.html("");
        target.append(grid);
    },

    InitGridRecursos:
    function LineaBase_Controller_InitGridRecursos() 
    {
        var grid =
        {
            Target: "divGridRecursosLineaBase",
            TableId: "gridRecursosLineaBase",
            PrimaryKey: "Id",
            Fields:
            [
                { Header: "Recurso", DataField: "Recurso", StyleCss: CssWeb.FormatText},
                { Header: "Tipo Recurso", DataField: "TipoRecurso", StyleCss: CssWeb.FormatCenter, Width: "100px"},
                { Header: "Tipo Costo", DataField: "TipoCosto", StyleCss: CssWeb.FormatCenter, Width: "100px"},
                { Header: "Costo Total", DataField: "CostoTotal_Format", StyleCss: CssWeb.FormatNumber, Width: "160px"}
            ]
        };

        LineaBase_Controller.GridRecursos = grid;
    },

    GridRecursos: {},

    Consultar:
    function LineaBase_Controller_Consultar() 
    {
        if (!Global_UI.ValidationGroupJquery("formGestionarLineaBase_Consulta")) return false;

        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "GestionarLineaBase.aspx/Consultar",
            JSON.stringify
            ({
                fechaConsulta : $("#txtFechaConsulta").val()
            }),
            LineaBase_Controller.Consultar_CallBack
        );        
    },

    Consultar_CallBack:
    function LineaBase_Controller_Consultar_CallBack(response) 
    {
        var view = response.d;

        $("#hiddenId").val(view.LineaBase.Id);
        $("#lblNombre").html(view.LineaBase.Nombre);
        $("#lblFechaUltimaModificacion").html(view.LineaBase.FechaRegistro_Format);

        LineaBase_Controller.ListarGrid(view.LineaBaseDetalle);

        Global_UI.BlockUI(false);
    },

    Importar:
    function LineaBase_Controller_Importar(archivoId) 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "GestionarLineaBase.aspx/Importar",
            JSON.stringify
            ({
                archivoId:archivoId
            }),
            LineaBase_Controller.Importar_CallBack
        );        
    },

    Importar_CallBack:
    function LineaBase_Controller_Importar_CallBack(response) 
    {
        var view = response.d;

        $("#hiddenId").val(view.LineaBase.Id);
        $("#lblNombre").html(view.LineaBase.Nombre);
        $("#lblFechaUltimaModificacion").html(view.LineaBase.FechaRegistro_Format);
        $("#txtFechaConsulta").val(Global_UI.GetToDayToString());

        LineaBase_Controller.ListarGrid(view.LineaBaseDetalle);

        Global_UI.BlockUI(false);
    },

    ConsultarRecursos:
    function LineaBase_Controller_ConsultarRecursos(esProyectado,codigoCuenta) 
    {
        Global_UI.BlockUI(true);

        if(!esProyectado)
            Global_UI.AjaxPOST
            (
                "GestionarLineaBase.aspx/ConsultarRecursosReales",
                JSON.stringify
                ({
                    codigoCuenta:codigoCuenta
                }),
                LineaBase_Controller.ConsultarRecursos_CallBack
            );     
        else
            Global_UI.AjaxPOST
            (
                "GestionarLineaBase.aspx/ConsultarRecursosProyectados",
                JSON.stringify
                ({
                    lineaBaseId:$("#hiddenId").val(),
                    codigoCuenta:codigoCuenta
                }),
                LineaBase_Controller.ConsultarRecursos_CallBack
            );        
    },

    ConsultarRecursos_CallBack:
    function LineaBase_Controller_ConsultarRecursos_CallBack(response) 
    {
        Global_UI.JqueryModalFormOpen("dialogRecursosLineaBase");

        LineaBase_Controller.InitGridRecursos();

        GridJSON.DataBind(LineaBase_Controller.GridRecursos,response.d);

        Global_UI.BlockUI(false);
    }
};

var GestionarLineaBase_ASPX =
{
    Load:
    function GestionarLineaBase_ASPX_Load() 
    {
        $("#btnConsultar").click(function () { LineaBase_Controller.Consultar(); });
        $("#btnImportar").click(function () { Global_UI.FileUpload("GestionarLineaBase_ASPX.ImportarLineaBase_CallBack",true); });

        var txtFechaConsulta = $("#txtFechaConsulta"); 

        Global_UI.Datepicker(txtFechaConsulta.attr("id"));
        txtFechaConsulta.val(Global_UI.GetToDayToString());
        txtFechaConsulta.addClass("required");
        txtFechaConsulta.addClass("regex");
        txtFechaConsulta.attr("regularexpression",RegularExpression.Fecha);
        txtFechaConsulta.attr("messageregex",MensajesUsuario.FechaInvalida);

        Global_UI.JqueryModalForm("dialogRecursosLineaBase", 720, 800, function () { LineaBase_Controller.GridRecursos = null; $("#gridRecursosLineaBase").remove(); });

        $("#btnConsultar").focus();
        LineaBase_Controller.Consultar();
    },

    ImportarLineaBase_CallBack:
    function GestionarLineaBase_ASPX_ImportarLineaBase_CallBack(response) 
    {
        LineaBase_Controller.Importar(response);
    }
};